[INFO] cloning repository https://github.com/yiyinzhang/docxtplrs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/yiyinzhang/docxtplrs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyiyinzhang%2Fdocxtplrs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyiyinzhang%2Fdocxtplrs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 3cf26065e1a95894f5fb8ef545765d16c5af8876
[INFO] checking yiyinzhang/docxtplrs against master#89a99936d9e76a50e8df622e7242190841fd871b for pr-156160-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fyiyinzhang%2Fdocxtplrs" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/yiyinzhang/docxtplrs
[INFO] finished tweaking git repo https://github.com/yiyinzhang/docxtplrs
[INFO] tweaked toml for git repo https://github.com/yiyinzhang/docxtplrs written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/yiyinzhang/docxtplrs on toolchain 89a99936d9e76a50e8df622e7242190841fd871b
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+89a99936d9e76a50e8df622e7242190841fd871b" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/yiyinzhang/docxtplrs already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+89a99936d9e76a50e8df622e7242190841fd871b" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded num-conv v0.2.0
[INFO] [stderr]   Downloaded quote v1.0.44
[INFO] [stderr]   Downloaded zopfli v0.8.3
[INFO] [stderr]   Downloaded itoa v1.0.17
[INFO] [stderr]   Downloaded zip v8.2.0
[INFO] [stderr]   Downloaded target-lexicon v0.13.5
[INFO] [stderr]   Downloaded pyo3-macros v0.28.2
[INFO] [stderr]   Downloaded pyo3-build-config v0.28.2
[INFO] [stderr]   Downloaded typed-path v0.12.3
[INFO] [stderr]   Downloaded tempfile v3.26.0
[INFO] [stderr]   Downloaded getrandom v0.4.1
[INFO] [stderr]   Downloaded pyo3-ffi v0.28.2
[INFO] [stderr]   Downloaded cc v1.2.56
[INFO] [stderr]   Downloaded pyo3-macros-backend v0.28.2
[INFO] [stderr]   Downloaded minijinja v2.17.1
[INFO] [stderr]   Downloaded zlib-rs v0.6.3
[INFO] [stderr]   Downloaded quick-xml v0.39.2
[INFO] [stderr]   Downloaded libc v0.2.182
[INFO] [stderr]   Downloaded pyo3 v0.28.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:fd22e2154e7db748230f413534f3a6d034160c9d2b7c14b90fba4e9bfc1a36d4" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 000e76ddc0577ffbafb714e66165d0d69f1d01efb2c1a0fbdd9d9d1837268dd7
[INFO] running `Command { std: "docker" "start" "000e76ddc0577ffbafb714e66165d0d69f1d01efb2c1a0fbdd9d9d1837268dd7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "000e76ddc0577ffbafb714e66165d0d69f1d01efb2c1a0fbdd9d9d1837268dd7" "/opt/rustwide/cargo-home/bin/cargo" "+89a99936d9e76a50e8df622e7242190841fd871b" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "000e76ddc0577ffbafb714e66165d0d69f1d01efb2c1a0fbdd9d9d1837268dd7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "000e76ddc0577ffbafb714e66165d0d69f1d01efb2c1a0fbdd9d9d1837268dd7" "/opt/rustwide/cargo-home/bin/cargo" "+89a99936d9e76a50e8df622e7242190841fd871b" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling target-lexicon v0.13.5
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]     Checking memchr v2.8.0
[INFO] [stderr]    Compiling libc v0.2.182
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]     Checking cfg-if v1.0.4
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]     Checking powerfmt v0.2.0
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]     Checking deranged v0.5.8
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling pyo3-build-config v0.28.2
[INFO] [stderr]     Checking zlib-rs v0.6.3
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]     Checking bumpalo v3.20.2
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]     Checking equivalent v1.0.2
[INFO] [stderr]     Checking hashbrown v0.16.1
[INFO] [stderr]     Checking simd-adler32 v0.3.8
[INFO] [stderr]     Checking time-core v0.1.8
[INFO] [stderr]     Checking regex-syntax v0.8.10
[INFO] [stderr]     Checking log v0.4.29
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]     Checking once_cell v1.21.3
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]     Checking itoa v1.0.17
[INFO] [stderr]     Checking num-conv v0.2.0
[INFO] [stderr]     Checking indexmap v2.13.0
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]     Checking time v0.3.47
[INFO] [stderr]     Checking zopfli v0.8.3
[INFO] [stderr]     Checking iana-time-zone v0.1.65
[INFO] [stderr]     Checking bitflags v2.11.0
[INFO] [stderr]    Compiling pyo3-ffi v0.28.2
[INFO] [stderr]    Compiling pyo3-macros-backend v0.28.2
[INFO] [stderr]    Compiling pyo3 v0.28.2
[INFO] [stderr]     Checking linux-raw-sys v0.12.1
[INFO] [stderr]     Checking typed-path v0.12.3
[INFO] [stderr]     Checking fastrand v2.3.0
[INFO] [stderr]     Checking chrono v0.4.44
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking zip v8.2.0
[INFO] [stderr]     Checking tempfile v3.26.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]     Checking regex v1.12.3
[INFO] [stderr]    Compiling pyo3-macros v0.28.2
[INFO] [stderr]     Checking quick-xml v0.39.2
[INFO] [stderr]     Checking minijinja v2.17.1
[INFO] [stderr]     Checking docxtplrs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::types::DocxTplError`
[INFO] [stdout]  --> src/richtext.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::types::DocxTplError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/image.rs:233:1
[INFO] [stdout]     |
[INFO] [stdout] 233 | #[pyclass(name = "InlineImage")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/image.rs:474:1
[INFO] [stdout]     |
[INFO] [stdout] 474 | #[pyclass(name = "Mm")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/image.rs:496:1
[INFO] [stdout]     |
[INFO] [stdout] 496 | #[pyclass(name = "Cm")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::DocxTplError`
[INFO] [stdout]  --> src/richtext.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::types::DocxTplError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/image.rs:518:1
[INFO] [stdout]     |
[INFO] [stdout] 518 | #[pyclass(name = "Inches")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/image.rs:540:1
[INFO] [stdout]     |
[INFO] [stdout] 540 | #[pyclass(name = "Pt")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]   --> src/jinja_env.rs:25:1
[INFO] [stdout]    |
[INFO] [stdout] 25 | #[pyclass(name = "JinjaEnv")]
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/richtext.rs:151:1
[INFO] [stdout]     |
[INFO] [stdout] 151 | #[pyclass(name = "RichText")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/richtext.rs:374:1
[INFO] [stdout]     |
[INFO] [stdout] 374 | #[pyclass(name = "RichTextParagraph")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/richtext.rs:433:1
[INFO] [stdout]     |
[INFO] [stdout] 433 | #[pyclass(name = "Listing")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]   --> src/subdoc.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | #[pyclass(name = "Subdoc")]
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/subdoc.rs:114:1
[INFO] [stdout]     |
[INFO] [stdout] 114 | #[pyclass(name = "CellColor")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/subdoc.rs:139:1
[INFO] [stdout]     |
[INFO] [stdout] 139 | #[pyclass(name = "VerticalMerge")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/subdoc.rs:162:1
[INFO] [stdout]     |
[INFO] [stdout] 162 | #[pyclass(name = "ColSpan")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/subdoc.rs:183:1
[INFO] [stdout]     |
[INFO] [stdout] 183 | #[pyclass(name = "DocumentBuilder")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `pyo3::types::PyAnyMethods::downcast`: use `Bound::cast` instead
[INFO] [stdout]    --> src/template.rs:832:31
[INFO] [stdout]     |
[INFO] [stdout] 832 |         if let Ok(list) = obj.downcast::<PyList>() {
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `pyo3::types::PyAnyMethods::downcast`: use `Bound::cast` instead
[INFO] [stdout]    --> src/template.rs:841:31
[INFO] [stdout]     |
[INFO] [stdout] 841 |         if let Ok(dict) = obj.downcast::<PyDict>() {
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `pyo3::types::PyAnyMethods::downcast`: use `Bound::cast` instead
[INFO] [stdout]     --> src/template.rs:1015:33
[INFO] [stdout]      |
[INFO] [stdout] 1015 |         if let Ok(list) = bound.downcast::<PyList>() {
[INFO] [stdout]      |                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `pyo3::types::PyAnyMethods::downcast`: use `Bound::cast` instead
[INFO] [stdout]     --> src/template.rs:1025:34
[INFO] [stdout]      |
[INFO] [stdout] 1025 |         if let Ok(tuple) = bound.downcast::<PyTuple>() {
[INFO] [stdout]      |                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `pyo3::types::PyAnyMethods::downcast`: use `Bound::cast` instead
[INFO] [stdout]     --> src/template.rs:1035:33
[INFO] [stdout]      |
[INFO] [stdout] 1035 |         if let Ok(dict) = bound.downcast::<PyDict>() {
[INFO] [stdout]      |                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `template`
[INFO] [stdout]    --> src/image.rs:257:9
[INFO] [stdout]     |
[INFO] [stdout] 257 |         template: &crate::template::DocxTemplate,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_template`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/image.rs:233:1
[INFO] [stdout]     |
[INFO] [stdout] 233 | #[pyclass(name = "InlineImage")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/image.rs:474:1
[INFO] [stdout]     |
[INFO] [stdout] 474 | #[pyclass(name = "Mm")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/image.rs:496:1
[INFO] [stdout]     |
[INFO] [stdout] 496 | #[pyclass(name = "Cm")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/image.rs:518:1
[INFO] [stdout]     |
[INFO] [stdout] 518 | #[pyclass(name = "Inches")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/image.rs:540:1
[INFO] [stdout]     |
[INFO] [stdout] 540 | #[pyclass(name = "Pt")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]   --> src/jinja_env.rs:25:1
[INFO] [stdout]    |
[INFO] [stdout] 25 | #[pyclass(name = "JinjaEnv")]
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/richtext.rs:151:1
[INFO] [stdout]     |
[INFO] [stdout] 151 | #[pyclass(name = "RichText")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/richtext.rs:374:1
[INFO] [stdout]     |
[INFO] [stdout] 374 | #[pyclass(name = "RichTextParagraph")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/richtext.rs:433:1
[INFO] [stdout]     |
[INFO] [stdout] 433 | #[pyclass(name = "Listing")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]   --> src/subdoc.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | #[pyclass(name = "Subdoc")]
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/subdoc.rs:114:1
[INFO] [stdout]     |
[INFO] [stdout] 114 | #[pyclass(name = "CellColor")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/subdoc.rs:139:1
[INFO] [stdout]     |
[INFO] [stdout] 139 | #[pyclass(name = "VerticalMerge")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/subdoc.rs:162:1
[INFO] [stdout]     |
[INFO] [stdout] 162 | #[pyclass(name = "ColSpan")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated associated constant `pyo3::impl_::deprecated::HasAutomaticFromPyObject::<true>::MSG`: The `FromPyObject` implementation for `#[pyclass]` types which implement `Clone` is changing to an opt-in option. Use `#[pyclass(from_py_object)]` to opt-in to the `FromPyObject` derive now, or `#[pyclass(skip_from_py_object)]` to skip the `FromPyObject` implementation.
[INFO] [stdout]    --> src/subdoc.rs:183:1
[INFO] [stdout]     |
[INFO] [stdout] 183 | #[pyclass(name = "DocumentBuilder")]
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `count`
[INFO] [stdout]     --> src/template.rs:1076:13
[INFO] [stdout]      |
[INFO] [stdout] 1076 |         let count = re.find_iter(&result).count();
[INFO] [stdout]      |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_count`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `count_before`
[INFO] [stdout]     --> src/template.rs:1092:13
[INFO] [stdout]      |
[INFO] [stdout] 1092 |         let count_before = re.find_iter(&result).count();
[INFO] [stdout]      |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_count_before`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `count_after`
[INFO] [stdout]     --> src/template.rs:1096:13
[INFO] [stdout]      |
[INFO] [stdout] 1096 |         let count_after = Regex::new(r"\{%tr\s+").unwrap().find_iter(&result).count();
[INFO] [stdout]      |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_count_after`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `pyo3::types::PyAnyMethods::downcast`: use `Bound::cast` instead
[INFO] [stdout]    --> src/template.rs:832:31
[INFO] [stdout]     |
[INFO] [stdout] 832 |         if let Ok(list) = obj.downcast::<PyList>() {
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `pyo3::types::PyAnyMethods::downcast`: use `Bound::cast` instead
[INFO] [stdout]    --> src/template.rs:841:31
[INFO] [stdout]     |
[INFO] [stdout] 841 |         if let Ok(dict) = obj.downcast::<PyDict>() {
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `pyo3::types::PyAnyMethods::downcast`: use `Bound::cast` instead
[INFO] [stdout]     --> src/template.rs:1015:33
[INFO] [stdout]      |
[INFO] [stdout] 1015 |         if let Ok(list) = bound.downcast::<PyList>() {
[INFO] [stdout]      |                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `pyo3::types::PyAnyMethods::downcast`: use `Bound::cast` instead
[INFO] [stdout]     --> src/template.rs:1025:34
[INFO] [stdout]      |
[INFO] [stdout] 1025 |         if let Ok(tuple) = bound.downcast::<PyTuple>() {
[INFO] [stdout]      |                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `pyo3::types::PyAnyMethods::downcast`: use `Bound::cast` instead
[INFO] [stdout]     --> src/template.rs:1035:33
[INFO] [stdout]      |
[INFO] [stdout] 1035 |         if let Ok(dict) = bound.downcast::<PyDict>() {
[INFO] [stdout]      |                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `template`
[INFO] [stdout]    --> src/image.rs:257:9
[INFO] [stdout]     |
[INFO] [stdout] 257 |         template: &crate::template::DocxTemplate,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_template`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_image_dimensions` is never used
[INFO] [stdout]    --> src/image.rs:157:8
[INFO] [stdout]     |
[INFO] [stdout] 157 | pub fn read_image_dimensions(path: &Path) -> Result<(u32, u32)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `images` and `undeclared_variables` are never read
[INFO] [stdout]   --> src/template.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct DocxTemplate {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 48 |     images: HashMap<String, InlineImage>, // rel_id -> image
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     undeclared_variables: Option<Vec<String>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DocxTemplate` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DocxPart` is never used
[INFO] [stdout]   --> src/types.rs:75:10
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub enum DocxPart {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TagType` is never used
[INFO] [stdout]   --> src/types.rs:99:10
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub enum TagType {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_prefix` and `is_special` are never used
[INFO] [stdout]    --> src/types.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | impl TagType {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 125 |     /// Parse a tag prefix (e.g., "p" from "{%p if ... %}")
[INFO] [stdout] 126 |     pub fn from_prefix(prefix: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn is_special(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W` is never used
[INFO] [stdout]    --> src/types.rs:190:15
[INFO] [stdout]     |
[INFO] [stdout] 190 |     pub const W: &str = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
[INFO] [stdout]     |               ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WP` is never used
[INFO] [stdout]    --> src/types.rs:191:15
[INFO] [stdout]     |
[INFO] [stdout] 191 |     pub const WP: &str = "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing";
[INFO] [stdout]     |               ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `A` is never used
[INFO] [stdout]    --> src/types.rs:192:15
[INFO] [stdout]     |
[INFO] [stdout] 192 |     pub const A: &str = "http://schemas.openxmlformats.org/drawingml/2006/main";
[INFO] [stdout]     |               ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PIC` is never used
[INFO] [stdout]    --> src/types.rs:193:15
[INFO] [stdout]     |
[INFO] [stdout] 193 |     pub const PIC: &str = "http://schemas.openxmlformats.org/drawingml/2006/picture";
[INFO] [stdout]     |               ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `R` is never used
[INFO] [stdout]    --> src/types.rs:194:15
[INFO] [stdout]     |
[INFO] [stdout] 194 |     pub const R: &str = "http://schemas.openxmlformats.org/officeDocument/2006/relationships";
[INFO] [stdout]     |               ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REL` is never used
[INFO] [stdout]    --> src/types.rs:195:15
[INFO] [stdout]     |
[INFO] [stdout] 195 |     pub const REL: &str = "http://schemas.openxmlformats.org/package/2006/relationships";
[INFO] [stdout]     |               ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONTENT_TYPES` is never used
[INFO] [stdout]    --> src/types.rs:196:15
[INFO] [stdout]     |
[INFO] [stdout] 196 |     pub const CONTENT_TYPES: &str = "http://schemas.openxmlformats.org/package/2006/content-types";
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_namespace_declarations` is never used
[INFO] [stdout]   --> src/xml_utils.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn get_namespace_declarations() -> Vec<(&'static str, &'static str)> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_tag` is never used
[INFO] [stdout]   --> src/xml_utils.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn normalize_tag(tag: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_tag_type` is never used
[INFO] [stdout]   --> src/xml_utils.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub fn extract_tag_type(tag: &str) -> TagType {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_jinja_tag` is never used
[INFO] [stdout]   --> src/xml_utils.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn is_jinja_tag(text: &str) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clean_xml_text` is never used
[INFO] [stdout]   --> src/xml_utils.rs:87:8
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn clean_xml_text(text: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_attributes` is never used
[INFO] [stdout]    --> src/xml_utils.rs:119:8
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub fn parse_attributes(elem: &BytesStart) -> HashMap<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_attributes` is never used
[INFO] [stdout]    --> src/xml_utils.rs:132:8
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub fn build_attributes(attrs: &HashMap<String, String>) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `local_name` is never used
[INFO] [stdout]    --> src/xml_utils.rs:141:8
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub fn local_name(elem: &BytesStart) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_local_name` is never used
[INFO] [stdout]    --> src/xml_utils.rs:148:8
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub fn has_local_name(elem: &BytesStart, name: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `split_jinja_tags` is never used
[INFO] [stdout]    --> src/xml_utils.rs:153:8
[INFO] [stdout]     |
[INFO] [stdout] 153 | pub fn split_jinja_tags(text: &str) -> Vec<(String, bool)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `text_to_runs` is never used
[INFO] [stdout]    --> src/xml_utils.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub fn text_to_runs(text: &str) -> Vec<(String, bool)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `merge_text_segments` is never used
[INFO] [stdout]    --> src/xml_utils.rs:202:8
[INFO] [stdout]     |
[INFO] [stdout] 202 | pub fn merge_text_segments(segments: Vec<(String, bool)>) -> Vec<(String, bool)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `remove_xml_declaration` is never used
[INFO] [stdout]    --> src/xml_utils.rs:232:8
[INFO] [stdout]     |
[INFO] [stdout] 232 | pub fn remove_xml_declaration(content: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_paragraphs` is never used
[INFO] [stdout]    --> src/xml_utils.rs:238:8
[INFO] [stdout]     |
[INFO] [stdout] 238 | pub fn find_paragraphs(xml: &str) -> Vec<(usize, usize)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_table_rows` is never used
[INFO] [stdout]    --> src/xml_utils.rs:259:8
[INFO] [stdout]     |
[INFO] [stdout] 259 | pub fn find_table_rows(xml: &str) -> Vec<(usize, usize)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_table_cells` is never used
[INFO] [stdout]    --> src/xml_utils.rs:280:8
[INFO] [stdout]     |
[INFO] [stdout] 280 | pub fn find_table_cells(xml: &str) -> Vec<(usize, usize)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_runs` is never used
[INFO] [stdout]    --> src/xml_utils.rs:301:8
[INFO] [stdout]     |
[INFO] [stdout] 301 | pub fn find_runs(xml: &str) -> Vec<(usize, usize)> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rebuild_text_content` is never used
[INFO] [stdout]    --> src/xml_utils.rs:323:4
[INFO] [stdout]     |
[INFO] [stdout] 323 | fn rebuild_text_content(xml: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `count`
[INFO] [stdout]     --> src/template.rs:1076:13
[INFO] [stdout]      |
[INFO] [stdout] 1076 |         let count = re.find_iter(&result).count();
[INFO] [stdout]      |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_count`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `count_before`
[INFO] [stdout]     --> src/template.rs:1092:13
[INFO] [stdout]      |
[INFO] [stdout] 1092 |         let count_before = re.find_iter(&result).count();
[INFO] [stdout]      |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_count_before`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `count_after`
[INFO] [stdout]     --> src/template.rs:1096:13
[INFO] [stdout]      |
[INFO] [stdout] 1096 |         let count_after = Regex::new(r"\{%tr\s+").unwrap().find_iter(&result).count();
[INFO] [stdout]      |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_count_after`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_image_dimensions` is never used
[INFO] [stdout]    --> src/image.rs:157:8
[INFO] [stdout]     |
[INFO] [stdout] 157 | pub fn read_image_dimensions(path: &Path) -> Result<(u32, u32)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `images` and `undeclared_variables` are never read
[INFO] [stdout]   --> src/template.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct DocxTemplate {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 48 |     images: HashMap<String, InlineImage>, // rel_id -> image
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     undeclared_variables: Option<Vec<String>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DocxTemplate` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DocxPart` is never used
[INFO] [stdout]   --> src/types.rs:75:10
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub enum DocxPart {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TagType` is never used
[INFO] [stdout]   --> src/types.rs:99:10
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub enum TagType {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_prefix` and `is_special` are never used
[INFO] [stdout]    --> src/types.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | impl TagType {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 125 |     /// Parse a tag prefix (e.g., "p" from "{%p if ... %}")
[INFO] [stdout] 126 |     pub fn from_prefix(prefix: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn is_special(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `W` is never used
[INFO] [stdout]    --> src/types.rs:190:15
[INFO] [stdout]     |
[INFO] [stdout] 190 |     pub const W: &str = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
[INFO] [stdout]     |               ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WP` is never used
[INFO] [stdout]    --> src/types.rs:191:15
[INFO] [stdout]     |
[INFO] [stdout] 191 |     pub const WP: &str = "http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing";
[INFO] [stdout]     |               ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `A` is never used
[INFO] [stdout]    --> src/types.rs:192:15
[INFO] [stdout]     |
[INFO] [stdout] 192 |     pub const A: &str = "http://schemas.openxmlformats.org/drawingml/2006/main";
[INFO] [stdout]     |               ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PIC` is never used
[INFO] [stdout]    --> src/types.rs:193:15
[INFO] [stdout]     |
[INFO] [stdout] 193 |     pub const PIC: &str = "http://schemas.openxmlformats.org/drawingml/2006/picture";
[INFO] [stdout]     |               ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `R` is never used
[INFO] [stdout]    --> src/types.rs:194:15
[INFO] [stdout]     |
[INFO] [stdout] 194 |     pub const R: &str = "http://schemas.openxmlformats.org/officeDocument/2006/relationships";
[INFO] [stdout]     |               ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REL` is never used
[INFO] [stdout]    --> src/types.rs:195:15
[INFO] [stdout]     |
[INFO] [stdout] 195 |     pub const REL: &str = "http://schemas.openxmlformats.org/package/2006/relationships";
[INFO] [stdout]     |               ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONTENT_TYPES` is never used
[INFO] [stdout]    --> src/types.rs:196:15
[INFO] [stdout]     |
[INFO] [stdout] 196 |     pub const CONTENT_TYPES: &str = "http://schemas.openxmlformats.org/package/2006/content-types";
[INFO] [stdout]     |               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_namespace_declarations` is never used
[INFO] [stdout]   --> src/xml_utils.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn get_namespace_declarations() -> Vec<(&'static str, &'static str)> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalize_tag` is never used
[INFO] [stdout]   --> src/xml_utils.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn normalize_tag(tag: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `extract_tag_type` is never used
[INFO] [stdout]   --> src/xml_utils.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub fn extract_tag_type(tag: &str) -> TagType {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_jinja_tag` is never used
[INFO] [stdout]   --> src/xml_utils.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn is_jinja_tag(text: &str) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clean_xml_text` is never used
[INFO] [stdout]   --> src/xml_utils.rs:87:8
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn clean_xml_text(text: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_attributes` is never used
[INFO] [stdout]    --> src/xml_utils.rs:119:8
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub fn parse_attributes(elem: &BytesStart) -> HashMap<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_attributes` is never used
[INFO] [stdout]    --> src/xml_utils.rs:132:8
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub fn build_attributes(attrs: &HashMap<String, String>) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `local_name` is never used
[INFO] [stdout]    --> src/xml_utils.rs:141:8
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub fn local_name(elem: &BytesStart) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_local_name` is never used
[INFO] [stdout]    --> src/xml_utils.rs:148:8
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub fn has_local_name(elem: &BytesStart, name: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `split_jinja_tags` is never used
[INFO] [stdout]    --> src/xml_utils.rs:153:8
[INFO] [stdout]     |
[INFO] [stdout] 153 | pub fn split_jinja_tags(text: &str) -> Vec<(String, bool)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `text_to_runs` is never used
[INFO] [stdout]    --> src/xml_utils.rs:178:8
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub fn text_to_runs(text: &str) -> Vec<(String, bool)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `merge_text_segments` is never used
[INFO] [stdout]    --> src/xml_utils.rs:202:8
[INFO] [stdout]     |
[INFO] [stdout] 202 | pub fn merge_text_segments(segments: Vec<(String, bool)>) -> Vec<(String, bool)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `remove_xml_declaration` is never used
[INFO] [stdout]    --> src/xml_utils.rs:232:8
[INFO] [stdout]     |
[INFO] [stdout] 232 | pub fn remove_xml_declaration(content: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_paragraphs` is never used
[INFO] [stdout]    --> src/xml_utils.rs:238:8
[INFO] [stdout]     |
[INFO] [stdout] 238 | pub fn find_paragraphs(xml: &str) -> Vec<(usize, usize)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_table_rows` is never used
[INFO] [stdout]    --> src/xml_utils.rs:259:8
[INFO] [stdout]     |
[INFO] [stdout] 259 | pub fn find_table_rows(xml: &str) -> Vec<(usize, usize)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_table_cells` is never used
[INFO] [stdout]    --> src/xml_utils.rs:280:8
[INFO] [stdout]     |
[INFO] [stdout] 280 | pub fn find_table_cells(xml: &str) -> Vec<(usize, usize)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_runs` is never used
[INFO] [stdout]    --> src/xml_utils.rs:301:8
[INFO] [stdout]     |
[INFO] [stdout] 301 | pub fn find_runs(xml: &str) -> Vec<(usize, usize)> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rebuild_text_content` is never used
[INFO] [stdout]    --> src/xml_utils.rs:323:4
[INFO] [stdout]     |
[INFO] [stdout] 323 | fn rebuild_text_content(xml: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 56.21s
[INFO] running `Command { std: "docker" "inspect" "000e76ddc0577ffbafb714e66165d0d69f1d01efb2c1a0fbdd9d9d1837268dd7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "000e76ddc0577ffbafb714e66165d0d69f1d01efb2c1a0fbdd9d9d1837268dd7", kill_on_drop: false }`
[INFO] [stdout] 000e76ddc0577ffbafb714e66165d0d69f1d01efb2c1a0fbdd9d9d1837268dd7
